package org.dromara.bclt.domain.vo;

import java.util.Date;

import cn.hutool.core.date.DateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.bclt.domain.InferenceLog;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;



/**
 * 推理日志视图对象 bclt_inference_log
 *
 * @author RRyuan
 * @date 2025-05-12
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = InferenceLog.class)
public class InferenceLogVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @ExcelProperty(value = "主键id")
    private Long id;

    /**
     * 设备id
     */
    @ExcelProperty(value = "设备id")
    private Long deviceId;

    /**
     * 触发的规则ids
     */
    @ExcelProperty(value = "触发的规则ids")
    private String ruleIds;

    /**
     * 推送内容
     */
    @ExcelProperty(value = "推送内容")
    private String content;

    /**
     * 每日三次，消息通知的序号(9,12,18:00)
     */
    @ExcelProperty(value = "每日推送编号")
    private Long noticeNumber;

    /**
     * 超过X天未学习
     */
    @ExcelProperty(value = "超过X天未学习")
    private Long unlearnOverDays;

    /**
     * 课程更新后X小时后开始学习
     */
    @ExcelProperty(value = "课程更新后X小时后开始学习")
    private Long learnStartAfterUpdateHour;

    /**
     * 课程更新后第X天完成学习
     */
    @ExcelProperty(value = "课程更新后第X天完成学习")
    private Long learnCompletionAfterUpdateDay;

    /**
     * 课程学习完成数量为X
     */
    @ExcelProperty(value = "课程学习完成数量为X")
    private Long courseCompletionNumber;

    /**
     * 课程学习未完成数量X
     */
    @ExcelProperty(value = "课程学习未完成数量X")
    private Long courseUncompletionNumber;

    /**
     * 患者当周课程学习进度
     */
    @ExcelProperty(value = "患者当周课程学习进度")
    private Long weekLearnCompletionRateBef0;

    /**
     * 患者APP使用为第X周
     */
    @ExcelProperty(value = "患者APP使用为第X周")
    private Long appRegisterDuration;

    /**
     * 6天前忽略运动提醒次数
     */
    @ExcelProperty(value = "6天前忽略运动提醒次数")
    private Long dayInterfereIgnoreTimesBef6;

    /**
     * 5天前忽略运动提醒次数
     */
    @ExcelProperty(value = "5天前忽略运动提醒次数")
    private Long dayInterfereIgnoreTimesBef5;

    /**
     * 4天前忽略运动提醒次数
     */
    @ExcelProperty(value = "4天前忽略运动提醒次数")
    private Long dayInterfereIgnoreTimesBef4;

    /**
     * 3天前忽略运动提醒次数
     */
    @ExcelProperty(value = "3天前忽略运动提醒次数")
    private Long dayInterfereIgnoreTimesBef3;

    /**
     * 2天前忽略运动提醒次数
     */
    @ExcelProperty(value = "2天前忽略运动提醒次数")
    private Long dayInterfereIgnoreTimesBef2;

    /**
     * 1天前忽略运动提醒次数
     */
    @ExcelProperty(value = "1天前忽略运动提醒次数")
    private Long dayInterfereIgnoreTimesBef1;

    /**
     * 当日忽略运动提醒次数
     */
    @ExcelProperty(value = "当日忽略运动提醒次数")
    private Long dayInterfereIgnoreTimesBef0;

    /**
     * 6日前干预提醒响应率为X
     */
    @ExcelProperty(value = "6日前干预提醒响应率为X")
    private Long dayInterfereResponsivityBef6;

    /**
     * 5日前干预提醒响应率为X
     */
    @ExcelProperty(value = "5日前干预提醒响应率为X")
    private Long dayInterfereResponsivityBef5;

    /**
     * 4日前干预提醒响应率为X
     */
    @ExcelProperty(value = "4日前干预提醒响应率为X")
    private Long dayInterfereResponsivityBef4;

    /**
     * 3日前干预提醒响应率为X
     */
    @ExcelProperty(value = "3日前干预提醒响应率为X")
    private Long dayInterfereResponsivityBef3;

    /**
     * 2日前干预提醒响应率为X
     */
    @ExcelProperty(value = "2日前干预提醒响应率为X")
    private Long dayInterfereResponsivityBef2;

    /**
     * 1日前干预提醒响应率为X
     */
    @ExcelProperty(value = "1日前干预提醒响应率为X")
    private Long dayInterfereResponsivityBef1;

    /**
     * 当日干预提醒响应率为X
     */
    @ExcelProperty(value = "当日干预提醒响应率为X")
    private Long dayInterfereResponsivityBef0;

    /**
     * 3周前运动完成率
     */
    @ExcelProperty(value = "3周前运动完成率")
    private Long weekExerciseCompletionRateBef3;

    /**
     * 2周前运动完成率
     */
    @ExcelProperty(value = "2周前运动完成率")
    private Long weekExerciseCompletionRateBef2;

    /**
     * 1周前运动完成率
     */
    @ExcelProperty(value = "1周前运动完成率")
    private Long weekExerciseCompletionRateBef1;

    /**
     * 当周前运动完成率
     */
    @ExcelProperty(value = "当周前运动完成率")
    private Long weekExerciseCompletionRateBef0;

    /**
     * 6天前是否提前完成当日运动计划
     */
    @ExcelProperty(value = "6天前是否提前完成当日运动计划")
    private Long dayExercisePlanDoneBef6;

    /**
     * 5天前是否提前完成当日运动计划
     */
    @ExcelProperty(value = "5天前是否提前完成当日运动计划")
    private Long dayExercisePlanDoneBef5;

    /**
     * 4天前是否提前完成当日运动计划
     */
    @ExcelProperty(value = "4天前是否提前完成当日运动计划")
    private Long dayExercisePlanDoneBef4;

    /**
     * 3天前是否提前完成当日运动计划
     */
    @ExcelProperty(value = "3天前是否提前完成当日运动计划")
    private Long dayExercisePlanDoneBef3;

    /**
     * 2天前是否提前完成当日运动计划
     */
    @ExcelProperty(value = "2天前是否提前完成当日运动计划")
    private Long dayExercisePlanDoneBef2;

    /**
     * 1天前是否提前完成当日运动计划
     */
    @ExcelProperty(value = "1天前是否提前完成当日运动计划")
    private Long dayExercisePlanDoneBef1;

    /**
     * 当日是否提前完成当日运动计划
     */
    @ExcelProperty(value = "当日是否提前完成当日运动计划")
    private Long dayExercisePlanDoneBef0;

    /**
     * 在两次决策时间点内学习X分钟
     */
    @ExcelProperty(value = "在两次决策时间点内学习X分钟")
    private Long betweenDecisionLearnDuration;

    /**
     * 在两次决策时间点内运动X分钟
     */
    @ExcelProperty(value = "在两次决策时间点内运动X分钟")
    private Long betweenDecisionExerciseDuration;

    /**
     * 上午9-12点完成当日运动量达标度
     */
    @ExcelProperty(value = "上午9-12点完成当日运动量达标度")
    private Long dayAmExerciseCompletionBef0;

    /**
     * 当日低等强度运动运动时长X
     */
    @ExcelProperty(value = "当日低等强度运动运动时长X")
    private Long dayLowExerciseDurationBef0;

    /**
     * 当日中等强度运动运动时长X
     */
    @ExcelProperty(value = "当日中等强度运动运动时长X")
    private Long dayMidExerciseDurationBef0;

    /**
     * 当日高等强度运动运动时长X
     */
    @ExcelProperty(value = "当日高等强度运动运动时长X")
    private Long dayHighExerciseDurationBef0;

    /**
     * 6天前上午活动时长X
     */
    @ExcelProperty(value = "6天前上午活动时长X")
    private Long dayAmExerciseDurationBef6;

    /**
     * 6天前下午活动时长X
     */
    @ExcelProperty(value = "6天前下午活动时长X")
    private Long dayPmExerciseDurationBef6;

    /**
     * 5天前上午活动时长X
     */
    @ExcelProperty(value = "5天前上午活动时长X")
    private Long dayAmExerciseDurationBef5;

    /**
     * 5天前下午活动时长X
     */
    @ExcelProperty(value = "5天前下午活动时长X")
    private Long dayPmExerciseDurationBef5;

    /**
     * 4天前上午活动时长X
     */
    @ExcelProperty(value = "4天前上午活动时长X")
    private Long dayAmExerciseDurationBef4;

    /**
     * 4天前下午活动时长X
     */
    @ExcelProperty(value = "4天前下午活动时长X")
    private Long dayPmExerciseDurationBef4;

    /**
     * 3天前上午活动时长X
     */
    @ExcelProperty(value = "3天前上午活动时长X")
    private Long dayAmExerciseDurationBef3;

    /**
     * 3天前下午活动时长X
     */
    @ExcelProperty(value = "3天前下午活动时长X")
    private Long dayPmExerciseDurationBef3;

    /**
     * 2天前上午活动时长X
     */
    @ExcelProperty(value = "2天前上午活动时长X")
    private Long dayAmExerciseDurationBef2;

    /**
     * 2天前下午活动时长X
     */
    @ExcelProperty(value = "2天前下午活动时长X")
    private Long dayPmExerciseDurationBef2;

    /**
     * 1天前上午活动时长X
     */
    @ExcelProperty(value = "1天前上午活动时长X")
    private Long dayAmExerciseDurationBef1;

    /**
     * 1天前下午活动时长X
     */
    @ExcelProperty(value = "1天前下午活动时长X")
    private Long dayPmExerciseDurationBef1;

    /**
     * 当日上午活动时长X
     */
    @ExcelProperty(value = "当日上午活动时长X")
    private Long dayAmExerciseDurationBef0;

    /**
     * 当日下午活动时长X
     */
    @ExcelProperty(value = "当日下午活动时长X")
    private Long dayPmExerciseDurationBef0;

    /**
     * 6天前步数
     */
    @ExcelProperty(value = "6天前步数")
    private Long dayStepBef6;

    /**
     * 5天前步数
     */
    @ExcelProperty(value = "5天前步数")
    private Long dayStepBef5;

    /**
     * 4天前步数
     */
    @ExcelProperty(value = "4天前步数")
    private Long dayStepBef4;

    /**
     * 3天前步数
     */
    @ExcelProperty(value = "3天前步数")
    private Long dayStepBef3;

    /**
     * 2天前步数
     */
    @ExcelProperty(value = "2天前步数")
    private Long dayStepBef2;

    /**
     * 1天前步数
     */
    @ExcelProperty(value = "1天前步数")
    private Long dayStepBef1;

    /**
     * 当日步数
     */
    @ExcelProperty(value = "当日步数")
    private Long dayStepBef0;

    /**
     * 在提醒后X分钟内开始运动
     */
    @ExcelProperty(value = "在提醒后X分钟内开始运动")
    private Long dayExerciseCompletionRateBef6;

    /**
     * 5天前运动目标完成率
     */
    @ExcelProperty(value = "5天前运动目标完成率")
    private Long dayExerciseCompletionRateBef5;

    /**
     * 4天前运动目标完成率
     */
    @ExcelProperty(value = "4天前运动目标完成率")
    private Long dayExerciseCompletionRateBef4;

    /**
     * 3天前运动目标完成率
     */
    @ExcelProperty(value = "3天前运动目标完成率")
    private Long dayExerciseCompletionRateBef3;

    /**
     * 2天前运动目标完成率
     */
    @ExcelProperty(value = "2天前运动目标完成率")
    private Long dayExerciseCompletionRateBef2;

    /**
     * 1天前运动目标完成率
     */
    @ExcelProperty(value = "1天前运动目标完成率")
    private Long dayExerciseCompletionRateBef1;

    /**
     * 当日运动目标完成率
     */
    @ExcelProperty(value = "当日运动目标完成率")
    private Long dayExerciseCompletionRateBef0;

    /**
     * 在提醒后X分钟内开始运动
     */
    @ExcelProperty(value = "在提醒后X分钟内开始运动")
    private Long exerciseStartAfterInterfereDuration;

    /**
     * 当日运动开始时间
     */
    @ExcelProperty(value = "当日运动开始时间")
    private Date dayExerciseStartTime;

    /**
     * 超过X天运动量未达标
     */
    @ExcelProperty(value = "超过X天运动量未达标")
    private Long exerciseUncompletionOverDays;

    /**
     * 当日运动平均开始时间
     */
    @ExcelProperty(value = "当日运动平均开始时间")
    private Date dayExerciseAverStartTime;

    /**
     * 当前每周运动达标强度
     */
    @ExcelProperty(value = "当前每周运动达标强度")
    private Long currentWeekExerciseIntensity;

    /**
     * 当前每日运动达标强度
     */
    @ExcelProperty(value = "当前每日运动达标强度")
    private Long currentDayExerciseIntensity;

    /**
     * 本周是第几运动周期
     */
    @ExcelProperty(value = "本周是第几运动周期")
    private Long currentExerciseWeekNumber;

    /**
     * 当日所有干预提醒次数
     */
    @ExcelProperty(value = "当日所有干预提醒次数")
    private Long dailyInterventionRemindersCount;

    /**
     * 当日所有成功干预提醒次数
     */
    @ExcelProperty(value = "当日所有成功干预提醒次数")
    private Long dailyInterventionSuccessRemindersCount;

    /**
     * 是否每天允许运动提醒
     */
    @ExcelProperty(value = "是否每天允许运动提醒")
    private Long exerciseReminderCycle;

    /**
     * 是否每天允许课程提醒
     */
    @ExcelProperty(value = "是否每天允许课程提醒")
    private Long courseReminderCycle;

    /**
     *  连续忽略运动提醒次数
     */
    @ExcelProperty(value = "连续忽略运动提醒次数")
    private Long consecutiveExerciseReminderIgnores;

    /**
     * dayAfterCourseUpdate 课程更新后的第几天
     */
    @ExcelProperty(value = "课程更新后的第几天")
    private Long dayAfterCourseUpdate;

    /**
     * 当日运动干预成功提醒次数
     */
    @ExcelProperty(value = "当日运动干预成功提醒次数")
    private Long dailyExerInterventionSucCount;

    /**
     * 当日课程干预成功提醒次数
     */
    @ExcelProperty(value = "当日课程干预成功提醒次数")
    private Long dailyCourseInterventionSucCount;

    /**
     * 当日运动干预总提醒次数
     */
    @ExcelProperty(value = "当日运动干预总提醒次数")
    private Long dailyExerInterventionTotalCount;
    /**
     * 当日课程干预总提醒次数
     */
    @ExcelProperty(value = "当日课程干预总提醒次数")
    private Long dailyCourseInterventionTotalCount;

    /**
     * 连续忽略课程提醒次数
     */
    @ExcelProperty(value = "连续忽略课程提醒次数")
    private Long consecutiveCourseReminderIgnores;

    /**
     * 触发安全问题停止运动推荐
     */
    @ExcelProperty(value = "触发安全问题停止运动推荐")
    private Long stopExerciseForSecurity;
}
